﻿Imports System.Reflection
Imports System.Reflection.Emit
Imports VBParser

Namespace Compiler.Semantic

    'Public Class EnumDescription
    '    Inherits TypeDescription

    '    Public Sub New(ByVal parent As NameContainer)
    '        MyBase.New(parent)
    '    End Sub

    '    Private m_enumBuilder As EnumBuilder

    '    Public Overrides Property UnderlyingType() As System.Type
    '        Get
    '            Return m_enumBuilder
    '        End Get
    '        Set(ByVal value As System.Type)
    '            If Not TypeOf value Is EnumBuilder Then
    '                Throw New ArgumentOutOfRangeException("value", "The underlying type of an EnumDescription must be EnumBuilder")
    '            End If
    '            m_enumBuilder = TryCast(value, EnumBuilder)
    '        End Set
    '    End Property

    '    Private Function CheckPrimitiveInteger(ByVal t As Type) As Boolean
    '        'TODO: Need to implement
    '        Return True
    '    End Function

    '    Private m_primitiveInteger As Type
    '    Public Property PrimitiveInteger() As Type
    '        Get
    '            Return m_primitiveInteger
    '        End Get
    '        Set(ByVal value As Type)
    '            If CheckPrimitiveInteger(value) Then
    '                m_primitiveInteger = value
    '            Else
    '                Throw New ArgumentOutOfRangeException("value", "This must be one of primitive integers")
    '            End If
    '        End Set
    '    End Property

    '    Private m_enumSyntaxNode As EnumDeclaration
    '    Public Overrides Property SyntaxNode() As VBParser.Tree
    '        Get
    '            Return m_enumSyntaxNode
    '        End Get
    '        Set(ByVal value As VBParser.Tree)
    '            m_enumSyntaxNode = TryCast(value, EnumDeclaration)
    '        End Set
    '    End Property
    'End Class

End Namespace